草庐IT

带指针的 C++ vector

全部标签

C++ 为什么在与 void 指针一起使用时 sprintf_s 格式会发生变化?

这是工作的原始代码://...unsigned__int64num=57;sprintf_s(buffer,sizeof(buffer),"%llu",num);但是,当我尝试将这部分提取到此函数中时:voidaddBuffered(void**attributeValue,char*format){sprintf_s(buffer,sizeof(buffer),format,*attributeValue);}通过调用:addBuffered((void**)&num,"%d");我必须将sprintf_s中的格式参数从%llu更改为%d以获得正确的值。有人可以解释为什么会发生这种情

C++ 访问器——我应该返回一个指向成员变量的指针还是返回实际的成员变量本身?

我希望这里有一个简单的问题。对于我的类的成员变量,它们都是私有(private)的,我应该使用访问器返回一个指针还是返回变量本身?还是我应该做点别的?例子:unsignedint*Object::GetObjectIDPointer(){return&objectID;}或unsignedintObject::GetObjectID(){returnobjectID;} 最佳答案 这在很大程度上取决于你想用它们做什么:如果你计划你的类的用户能够在你的类中修改变量(这是一个可怕的和强烈反对的事情)你可以返回指针或引用;否则,返回变量本

c++ - std::vector::operator[] 不测试类型

我有一个这样的结构:structVrtxPros{longidx;std::vectorpros;VrtxPros(constlong&_idx=-1,conststd::string&val=""):idx(_idx){if(!val.empty()&&val!="")pros.push_back(val);}};后来在代码中我这样使用它:longidx=1234;VrtxProsvp(2134,std::string("-1"));if(margin)vp.pros[0]=idx;编译器对此没有问题。我想知道,因为运营商应该提供引用。我couldnotfindstd::string

c++ - 使基类指针表现得像 C++ 中的派生类

如果我从我的Shape基类创建一个指针,我如何才能让它表现得像圆(派生)类?这是我的类定义://CShape.hclassdefinition//Shapeclassdefinition#ifndefCSHAPE_H#defineCSHAPE_HclassCShape{protected:floatarea;virtualvoidcalcArea();public:floatgetArea(){returnarea;}};classCCircle:publicCShape{protected:intcenterX;intcenterY;floatradius;voidcalcArea(

c++ - 指针的问题

#include"stdafx.h"#include#include#includeusingnamespacestd;classPerson{public:Person();Person(stringinput_name,intinput_age);voidread(stringinput_name,intinput_age);voidprint()const;private:stringname;intage;};Person::Person(){name="";age=0;}Person::Person(stringinput_name,intinput_age){name=in

c++ - 指针深拷贝的 vector

我是一个非常新的程序员,也是一个super初学者,所以我对C++了解不多。我有一个关于制作指针的深层拷贝的问题。我拥有的是一个充满POD的A类和一个指向此类的指针(A*P)。我有第二个B类,其中包含一些其他POD和指向A类的指针vector。我想用A*P的深层拷贝填充这个vector,因为在一个循环中我将动态分配和释放它。以下不起作用。我相信它是我的复制构造函数和=运算符的重载。这是我为了乐趣和学习而做的事情。classA{public:...............};classB{public:B();~B();B(constB&Copier);B&B::operator=(con

c++ - 指向不同返回类型和签名的函数的指针映射

我正在寻找一种通过字符串输入调用不同函数的方法。我有一个映射,将每个唯一字符串绑定(bind)到一个函数指针和一个查找函数,用于搜索映射并在找到时返回一个指针。现在的诀窍是,我需要一种方法来存储和返回指向至少具有不同返回类型的函数的指针,如果可能的话,还具有不同的签名。用法是:从网络套接字获取字符串输入->查找并执行找到的函数->将结果直接推回套接字以进行序列化和发送,而不关心实际发生了什么。这可行吗?如果没有,人们将如何处理这项任务? 最佳答案 这可以通过一些不同方式的样板代码来完成。如果签名的数量足够少,您可以保存多个函数指针v

c++ - 非指针函数类型可以是非类型参数吗?

我一直在试验C++中的函数类型。请注意,我指的不是像这样的指向函数的指针类型:typedefvoid(*voidFuncPtr)();但更具异国情调的是:typedefvoid(voidFunc)();我没想到下面的代码可以编译,但令人惊讶的是:templateclassfuncClass{public:voidcall(){func();};};voidfunc(){}voidTest(){funcClassfoobar;foobar.call();}但是,如果我尝试将以下内容添加到funcClass:voidFuncPtrget(){return&func;}我收到错误Addres

c++ - 如何识别boost fusion vector 中的类型

如何识别boost::fusionvector中的类型?例如fusion::vectorv;然后可以让我将v[0]识别为int类型,将v[1]识别为double类型和v[2]作为string类型。谢谢。 最佳答案 为了从boost::fusion::vector中提取元素,您需要使用boost::fusion::at_c,如下所示:boost::fusion::vectorv(1,"hello");std::cout(v)N位置的类型是:boost::fusion::result_of::at_c,1>::type

c++ - 如果我使用 Array 而不是 Vector,有什么缺点吗?

我用C++编写了一个MPCController,其中包含一个Matrix类,我将数据存储在一个数组中,并使用了C内存函数(memcpy、memset等)。今天我用c++vector替换了数组,我使用复制来移动内存等......我遇到了一个问题,通过用vector替换数组,控制信号的计算时间几乎增加了一倍。如果我使用alloc、memcpy、memset、freeinsc++代码,有什么缺点吗?如果有的话是什么? 最佳答案 Vector在两个方面增加值(value):提供C数组中不存在的附加功能,例如调整大小、检查当前大小等。您可能会